home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / z / SM / SMPrefs / Window_Rexx.PAS < prev    next >
Pascal/Delphi Source File  |  1995-07-11  |  8KB  |  243 lines

  1. Procedure RexxEDWin;
  2.  
  3. CONST
  4.     NI = 0; CC = 1; G_CMD1 = 2; G_CMD2 = 3; G_CMD3 = 4; 
  5.     G_PORT1 = 5; G_PORT2 = 6; G_PORT3 = 7; 
  6.     G_OK = 8;  G_AREXX = 9; G_CAN = 10;
  7.  
  8. VAR 
  9.     T            : Array[0..13] of tTagItem;
  10.     GadFlags     : tNewGadget;
  11.     G            : Array[NI..G_CAN] of pGadget;
  12.     dummy        : LONG;
  13.     ExitFlag, OK : Boolean;
  14.     disable      : Byte;
  15.     TheWin       : pWindow;
  16.     message      : pIntuiMessage;
  17.     MsgClass     : LongInt;
  18.     gadcode      : pGadget;
  19.     StrInfo      : pStringInfo;
  20.  
  21. begin
  22.     G[NI] := NIL;
  23.     G[CC] := CreateContext(@g[NI]);
  24.     If G[CC] <> NIL Then begin
  25.     
  26.         T[0].ti_Tag  := GTCB_Checked;
  27.         T[0].ti_Data := ord(rexxwished); 
  28.         T[1].ti_Tag  := GA_Disabled;
  29.         T[1].ti_Data := False_;
  30.         T[2].ti_Tag  := $80080044;  { GTCB_Scaled }
  31.         T[2].ti_Data := True_;
  32.         T[3].ti_Tag  := TAG_DONE;
  33.  
  34.         With GadFlags Do Begin
  35.             ng_TextAttr   := @My_Font;
  36.             ng_Width      := Sizes[S_CM_W];
  37.             ng_LeftEdge   := Sizes[RexxWin_L]+4;
  38.             ng_TopEdge    := Sizes[TBS] + 4;
  39.             ng_Height     := Sizes[S_GAD_H];
  40.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Send ARexx commands');
  41.             ng_GadgetID   := G_AREXX;
  42.             ng_VisualInfo := vi;
  43.             ng_Flags      := PLACETEXT_LEFT;
  44.         End;
  45.         G[G_AREXX] := CreateGadgetA(CHECKBOX_KIND, G[CC], @GadFlags, @T);
  46.   
  47.         T[0].ti_Tag  := GA_Disabled;
  48.         T[0].ti_Data := False_;
  49.         T[1].ti_Tag  := GT_UnderScore;
  50.         T[1].ti_Data := LONG('_');
  51.         T[2].ti_Tag  := GTST_MaxChars;
  52.         T[2].ti_Data := 180;
  53.         T[3].ti_Tag  := GTST_String;
  54.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, Cmd1));
  55.         T[4].ti_Tag  := TAG_DONE;
  56.         With GadFlags Do Begin
  57.             ng_Width      := Sizes[S_G2_W];
  58.             ng_TopEdge    := ng_TopEdge + ng_Height + 1;
  59.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Initial ARexx command');
  60.             ng_GadgetID   := G_CMD1;
  61.         End;
  62.         G[G_CMD1] := CreateGadgetA(STRING_KIND, G[G_AREXX], @GadFlags, @T);
  63.  
  64.         T[2].ti_Data := 24;
  65.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, RexxPort1));
  66.         With GadFlags Do Begin
  67.             ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  68.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Initial ARexx Port');
  69.             ng_GadgetID   := G_PORT1;
  70.         End;
  71.         G[G_PORT1] := CreateGadgetA(STRING_KIND, G[G_CMD1], @GadFlags, @T);
  72.  
  73.          T[2].ti_Data := 180;
  74.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, Cmd3));
  75.         With GadFlags Do Begin
  76.             ng_TopEdge    := ng_TopEdge + ng_Height + 1;
  77.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Precmd ARexx command');
  78.             ng_GadgetID   := G_CMD3;
  79.         End;
  80.         G[G_CMD3] := CreateGadgetA(STRING_KIND, G[G_PORT1], @GadFlags, @T);
  81.  
  82.         T[2].ti_Data := 24;
  83.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, RexxPort3));
  84.         With GadFlags Do Begin
  85.             ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  86.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Precmd ARexx Port');
  87.             ng_GadgetID   := G_PORT3;
  88.         End;
  89.         G[G_PORT3] := CreateGadgetA(STRING_KIND, G[G_CMD3], @GadFlags, @T);
  90.         
  91.         T[2].ti_Data := 180;
  92.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, Cmd2));
  93.         With GadFlags Do Begin
  94.             ng_TopEdge    := ng_TopEdge + ng_Height + 1;
  95.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Exit ARexx command');
  96.             ng_GadgetID   := G_CMD2;
  97.         End;
  98.         G[G_CMD2] := CreateGadgetA(STRING_KIND, G[G_PORT3], @GadFlags, @T);
  99.  
  100.         T[2].ti_Data := 24;
  101.         T[3].ti_Data := LONG(CStrConstPtrAR(@RememberKey, RexxPort2));
  102.         With GadFlags Do Begin
  103.             ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H] + 1;
  104.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Exit ARexx Port');
  105.             ng_GadgetID   := G_PORT2;
  106.         End;
  107.         G[G_PORT2] := CreateGadgetA(STRING_KIND, G[G_CMD2], @GadFlags, @T);
  108.         
  109.         T[0].ti_Tag := TAG_END;
  110.         With GadFlags Do Begin
  111.             ng_LeftEdge   := Sizes[S_WB_L]+8;
  112.             ng_Width      := (Sizes[S_G2_W] div 3);
  113.             ng_TopEdge    := ng_TopEdge + Sizes[S_GAD_H] + 8;
  114.             ng_Height     := Sizes[S_GAD_H];
  115.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Ok');
  116.             ng_GadgetID   := G_OK;
  117.             ng_Flags      := 0;
  118.         End;
  119.         G[G_OK] := CreateGadgetA(BUTTON_KIND, G[G_PORT2], @GadFlags, @T);
  120.  
  121.         With GadFlags Do Begin
  122.             ng_LeftEdge   := Sizes[RexxWin_L] + Sizes[S_G2_W]+4-ng_Width; 
  123.             ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Cancel');
  124.             ng_GadgetID   := G_CAN;
  125.         End;
  126.         G[G_CAN] := CreateGadgetA(BUTTON_KIND, G[G_OK], @GadFlags, @T);
  127.      
  128.         T[0].ti_Tag  := WA_Left;
  129.         T[0].ti_Data := Left;
  130.         T[1].ti_Tag  := WA_Top;
  131.         T[1].ti_Data := Top;
  132.         T[2].ti_Tag  := WA_InnerWidth;
  133.         T[2].ti_Data := Sizes[RexxWin_L] + Sizes[S_G2_W]+8;
  134.         T[3].ti_Tag  := WA_Height;
  135.         T[3].ti_Data := g[G_CAN]^.TopEdge + g[G_CAN]^.Height + Sizes[S_WB_B] + 4;
  136.         T[4].ti_Tag  := WA_Title;
  137.         T[4].ti_Data := LONG(CStrConstPtrAR(@RememberKey, 'Rexx commands')); 
  138.         T[5].ti_Tag  := WA_IDCMP;
  139.         T[5].ti_Data := STRINGIDCMP|BUTTONIDCMP|IDCMP_GADGETUP|CHECKBOXIDCMP|
  140.                 IDCMP_REFRESHWINDOW|IDCMP_CLOSEWINDOW;
  141.         T[6].ti_Tag  := WA_DragBar;
  142.         T[6].ti_Data := True_;
  143.         T[7].ti_Tag  := WA_DepthGadget;
  144.         T[7].ti_Data := True_;
  145.         T[8].ti_Tag  := WA_AutoAdjust;
  146.         T[8].ti_Data := True_;
  147.         T[9].ti_Tag  := WA_Activate;
  148.         T[9].ti_Data := True_;
  149.         T[10].ti_Tag := WA_Gadgets;
  150.         T[10].ti_Data:= LONG(g[NI]);
  151.         T[11].ti_Tag := WA_SimpleRefresh;
  152.         T[11].ti_Data:= True_;
  153.         T[12].ti_Tag := WA_CloseGadget;
  154.         T[12].ti_Data:= True_; 
  155.         T[13].ti_Tag := TAG_DONE;
  156.     
  157.         TheWin := OpenWindowTaglist(NIL,@T);
  158.         If TheWin <> NIL Then begin
  159.             GT_RefreshWindow(TheWin, NIL);
  160.             if RexxWished then 
  161.                 disable := False_
  162.             else 
  163.                 disable := True_;
  164.                 
  165.             DisableGadget(g[G_PORT1], TheWin, Disable);
  166.             DisableGadget(g[G_CMD1], TheWin, Disable);
  167.             DisableGadget(g[G_PORT2], TheWin, Disable);
  168.             DisableGadget(g[G_CMD2], TheWin, Disable);
  169.             DisableGadget(g[G_PORT3], TheWin, Disable);
  170.             DisableGadget(g[G_CMD3], TheWin, Disable);
  171.  
  172.             ExitFlag := False;
  173.             While Not exitflag Do Begin
  174.                 dummy := Wait(BitMask(TheWin^.UserPort^.MP_SIGBIT));
  175.                 message  := GT_GetIMsg(TheWin^.userPort);
  176.                 While message <> NIL do begin
  177.                     MsgClass := message^.Class;
  178.                     if MsgClass = IDCMP_GADGETUP then begin
  179.                         GadCode  := pGadget(message^.IAddress);
  180.                         StrInfo  := gadcode^.SpecialInfo;
  181.                     end;
  182.                     
  183.                     GT_ReplyIMsg(message);
  184.                     Case MsgClass Of
  185.                     
  186.               IDCMP_CLOSEWINDOW : ExitFlag := True;
  187.               
  188.                     IDCMP_REFRESHWINDOW : Begin
  189.                         GT_BeginRefresh(TheWin);
  190.                         GT_EndRefresh(TheWin, True);
  191.                     end;
  192.                   
  193.                     IDCMP_GADGETUP : Begin
  194.          
  195.                         Case gadcode^.GadgetID Of
  196.             
  197.                             G_AREXX : begin
  198.                                 If RexxWished then 
  199.                                     RexxWished := False
  200.                                 else
  201.                                     RexxWished := True;
  202.                                 If NOT RexxWished then
  203.                                     Disable := True_
  204.                                 else
  205.                                     disable := False_;
  206.                                     
  207.                                 DisableGadget(g[G_PORT1], TheWin, Disable);
  208.                                 DisableGadget(g[G_CMD1], TheWin, Disable);
  209.                                 DisableGadget(g[G_PORT2], TheWin, Disable);
  210.                                 DisableGadget(g[G_CMD2], TheWin, Disable);
  211.                                 DisableGadget(g[G_PORT3], TheWin, Disable);
  212.                                 DisableGadget(g[G_CMD3], TheWin, Disable);
  213.                             end;
  214.                             
  215.                             G_OK   : begin
  216.                                 StrInfo := g[G_CMD1]^.SpecialInfo;
  217.                                 Cmd1 := PtrToPas(strinfo^.Buffer);
  218.                                 StrInfo := g[G_CMD2]^.SpecialInfo;
  219.                                 Cmd2 := PtrToPas(strinfo^.Buffer);
  220.                                 StrInfo := g[G_CMD3]^.SpecialInfo;
  221.                                 Cmd3 := PtrToPas(strinfo^.Buffer);
  222.                                 StrInfo := g[G_PORT1]^.SpecialInfo;
  223.                                 RexxPort1 := PtrToPas(strinfo^.Buffer);
  224.                                 StrInfo := g[G_PORT2]^.SpecialInfo;
  225.                                 RexxPort2 := PtrToPas(strinfo^.Buffer);
  226.                                 StrInfo := g[G_PORT3]^.SpecialInfo;
  227.                                 RexxPort3 := PtrToPas(strinfo^.Buffer);
  228.                                 ExitFlag := True;
  229.                             end;
  230.                                 
  231.                             G_CAN : ExitFlag := True;
  232.                         End; (*case*)
  233.                     end;
  234.             
  235.                 End; (*case*)
  236.                 message  := GT_GetIMsg(TheWin^.userPort);
  237.                 end;
  238.             End; (*while*)
  239.             CloseWindow(TheWin);
  240.             FreeGadgets(g[NI]);
  241.         end;
  242.     end;
  243. end;